/* \file 
 *	\brief Lennard-Jones potentials, with cutoff
 */

#ifndef MDS_LJ_CUTOFF_INCLUDED
#define MDS_LJ_CUTOFF_INCLUDED 1

#include "../mds/potential.h"

/** \brief CutOff  Lennard-Jones */
typedef struct
{
	Real epsilon;       /*!< in kJ/mol  */
	Real epsilon4;      /*!< 4 epsilon  */
	Real epsilon24;     /*!< 24 espilon */
	Real sigma;         /*!< in nm      */
	Real r_c;           /*!< in nm      */
	Real r_csq;         /*!< r_c^2      */
	Real sigma_sq;      /*!< sigma^2    */
	Real padding;       /*!< unused     */
} mds_lj_cutoff_data;


void mds_lj_cutoff_init( mds_lj_cutoff_data *lj_cutoff, Real epsilon, Real sigma, Real r_c );
Real mds_lj_cutoff( const mds_vector *r, mds_vector *f, void *args );

/** \brief Cutoff LJ */
typedef struct
{
	Real sigma_sq;      /*!< sigma^2    */
	Real epsilon4;      /*!< 4 epsilon  */
	Real epsilon24;     /*!< 24 espilon */
	Real r_c;           /*!< cut off    */
	Real r_c_sq;        /*!< r_c^2       */
	Real V_c;           /*!< cutoff potential */
	Real F_c;           /*!< cutoff force     */
	Real padding;
} mds_ljc_data;

void mds_ljc_init( mds_ljc_data *ljc, Real  epsilon, Real sigma, Real r_c );
Real mds_ljc( const mds_vector *r, mds_vector *f, void *args );


#endif
